﻿using System;
using VitCode.Castle.Entities;

namespace AMS.WorkBill.Entities
{
    /// <summary>
    /// 工单对象
    /// </summary>
    public class WorkBillInfo
    {
        public static string PAGE_SESSION_NAME = "SessionCurrWokBillInfo" , STATE_DARFT="Darft",STATE_CLOSE="Close";
        public static string WO_TYPE_ALLOCATION = "Allocation", WO_TYPE_CAT_VALUE = "CatValue";
        /*
         * 领用：Consuming
         * 维护：Maintain
         * 借用：Borrow
         * 返还：Return
         * 退仓：BackPosition
         * 调拨：Allocation
         * 停启用：IsUsed
         * 报废：Scrap
         * 损毁：Damage
         
         
         */

        protected DateTime m_CloseDate = DateTime.Now;
        protected string m_Code;
        protected DateTime m_CreateDate = DateTime.Now;
        protected bool m_ExBool1;
        protected DateTime m_ExDate1 = DateTime.Now;
        protected double m_ExDouble1;
        protected string m_ExMemo1;
        protected string m_ExMemo2;
        protected string m_ExMemo3;
        protected string m_ExMemo4;
        protected DateTime m_ExpectedFixDate = DateTime.Now;
        protected string m_ExUserName1;
        protected string m_ExUserName2;
        protected Guid m_Id;
        protected int m_ItemIndex;
        protected string m_Memo;
        protected UserGroup m_OrgUserGroup;
        protected User m_Sender;
        protected string m_State;
        protected User m_TargetUser;
        protected UserGroup m_TargetUserGroup;
        protected string m_Theme;
        protected string m_TypeName;
        protected int m_ExInt1;

        /// <summary>
        /// 处理流程编号
        /// </summary>
        public virtual int ItemIndex
        {
            get { return m_ItemIndex; }
            set { m_ItemIndex = value; }
        }

        /// <summary>
        /// 唯一标识
        /// </summary>
        public virtual Guid Id
        {
            get { return m_Id; }
            set { m_Id = value; }
        }

        /// <summary>
        /// 编号
        /// </summary>
        public virtual string Code
        {
            get { return m_Code; }
            set { m_Code = value; }
        }

        /// <summary>
        /// 主题
        /// </summary>
        public virtual string Theme
        {
            get { return m_Theme; }
            set { m_Theme = value; }
        }

        /// <summary>
        /// 类型
        /// </summary>
        public virtual string TypeName
        {
            get { return m_TypeName; }
            set { m_TypeName = value; }
        }

        /// <summary>
        /// 状态
        /// </summary>
        public virtual string State
        {
            get { return m_State; }
            set { m_State = value; }
        }

        /// <summary>
        /// 创建日期
        /// </summary>
        public virtual DateTime CreateDate
        {
            get { return m_CreateDate; }
            set { m_CreateDate = value; }
        }

        /// <summary>
        /// 闭单日期
        /// </summary>
        public virtual DateTime CloseDate
        {
            get { return m_CloseDate; }
            set { m_CloseDate = value; }
        }

        /// <summary>
        /// 预计处理完成时间（精准的日期，预期值）
        /// 资产领用：领用日期
        /// 资产维护：申请日期
        /// 资产借用：归还日期
        /// 资产返还：归还日期
        /// 资产退仓：退仓日期
        /// 资产调拨：调拨日期
        /// </summary>
        public virtual DateTime ExpectedFixDate
        {
            get { return m_ExpectedFixDate; }
            set { m_ExpectedFixDate = value; }
        }

        /// <summary>
        /// 派单人
        /// </summary>
        public virtual User Sender
        {
            get { return m_Sender; }
            set { m_Sender = value; }
        }

        /// <summary>
        /// 目标使用人
        /// 资产领用：领用人
        /// 资产维护：申请人
        /// 资产借用：空
        /// 资产返还：归还人
        /// 资产退仓：退仓人
        /// 资产调拨：调拨日期
        /// 资产停启用：空
        /// 资产报废：申报人
        /// 资产损毁：申请人
        /// </summary>
        public virtual User TargetUser
        {
            get { return m_TargetUser; }
            set { m_TargetUser = value; }
        }

        /// <summary>
        /// 目标用户组
        /// 资产领用：领用部门
        /// 资产维护：申请部门
        /// 资产借用：借入部门
        /// 资产返还：归还部门
        /// 资产退仓：退仓部门
        /// 资产调拨：调入部门
        /// 资产停启用：空
        /// 资产报废：申报人
        /// 资产损毁：申请人
        /// </summary>
        public virtual UserGroup TargetUserGroup
        {
            get { return m_TargetUserGroup; }
            set { m_TargetUserGroup = value; }
        }

        /// <summary>
        /// 原属用户组
        /// 资产领用：
        /// 资产维护：申请部门
        /// 资产借用：借入部门
        /// 资产返还：归还部门
        /// 资产退仓：退仓部门
        /// 资产调拨：调出部门
        /// 资产停启用：空
        /// 资产报废：申报部门
        /// 资产损毁：申请部门
        /// </summary>
        public virtual UserGroup OrgUserGroup
        {
            get { return m_OrgUserGroup; }
            set { m_OrgUserGroup = value; }
        }

        protected User m_OrgUser;
        public virtual User OrgUser
        {
            get { return m_OrgUser; }
            set { m_OrgUser = value; }
        }

        /// <summary>
        /// 备注
        /// </summary>
        public virtual string Memo
        {
            get { return m_Memo; }
            set { m_Memo = value; }
        }

        /// <summary>
        /// 扩展字段备注1
        /// 资产领用：空
        /// 资产维护：维修内容
        /// 资产借用：空
        /// 资产返还：借出时状况
        /// 资产退仓：退仓原因
        /// 资产调拨：
        /// 资产停启用：停启用原因
        /// 资产报废：报废原因
        /// 资产损毁：损毁原因
        /// </summary>
        public virtual string ExMemo1
        {
            get { return m_ExMemo1; }
            set { m_ExMemo1 = value; }
        }

        /// <summary>
        /// 扩展字段备注2
        /// 资产领用：空
        /// 资产维护：维修保质期
        /// 资产借用：空
        /// 资产返还：归还时状况
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：报废内容
        /// 资产损毁：损毁内容
        /// </summary>
        public virtual string ExMemo2
        {
            get { return m_ExMemo2; }
            set { m_ExMemo2 = value; }
        }

        /// <summary>
        /// 扩展字段备注2
        /// 资产领用：
        /// 资产维护：
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：使用部门意见
        /// 资产损毁：使用冲凉意见
        /// </summary>
        public virtual string ExMemo3
        {
            get { return m_ExMemo3; }
            set { m_ExMemo3 = value; }
        }

        /// <summary>
        /// 扩展字段备注2
        /// 资产领用：
        /// 资产维护：
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：
        /// 资产损毁：鉴定意见
        /// </summary>
        public virtual string ExMemo4
        {
            get { return m_ExMemo4; }
            set { m_ExMemo4 = value; }
        }


        /// <summary>
        /// 扩展字段日期1
        /// 资产领用：空
        /// 资产维护：维修日期
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：
        /// 资产损毁：
        /// </summary>
        public virtual DateTime ExDate1
        {
            get { return m_ExDate1; }
            set { m_ExDate1 = value; }
        }

        /// <summary>
        /// 扩展字段用户1
        /// 资产领用：
        /// 资产维护：验收人
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：鉴定人
        /// 资产损毁：
        /// </summary>
        public virtual string ExUserName1
        {
            get { return m_ExUserName1; }
            set { m_ExUserName1 = value; }
        }

        /// <summary>
        /// 扩展字段用户2
        /// 资产领用：
        /// 资产维护：
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：审批人
        /// 资产损毁：
        /// </summary>
        public virtual string ExUserName2
        {
            get { return m_ExUserName2; }
            set { m_ExUserName2 = value; }
        }

        /// <summary>
        /// 扩展字段布尔值1
        /// 资产领用：
        /// 资产维护：
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：停启用标识
        /// 资产报废：是否正常报废
        /// 资产损毁：
        /// </summary>
        public virtual bool ExBool1
        {
            get { return m_ExBool1; }
            set { m_ExBool1 = value; }
        }


        /// <summary>
        /// 扩展信息浮点值1
        /// 资产领用：
        /// 资产维护：
        /// 资产借用：
        /// 资产返还：
        /// 资产退仓：
        /// 资产调拨：
        /// 资产停启用：
        /// 资产报废：
        /// 资产损毁：
        /// </summary>
        public virtual double ExDouble1
        {
            get { return m_ExDouble1; }
            set { m_ExDouble1 = value; }
        }

        public virtual int ExInt1
        {
            get { return m_ExInt1; }
            set { m_ExInt1 = value; }
        }

        /// <summary>
        /// 重写Equals方法
        /// </summary>
        public override bool Equals(object obj)
        {
            if (ReferenceEquals(obj, this))
                return true;
            if (obj == null)
                return false;
            var sObj = obj as WorkBillInfo;
            return sObj != null && (sObj.Id == m_Id || (sObj.Code == m_Code));
        }

        /// <summary>
        /// 重写GetHashCode方法
        /// </summary>
        public override int GetHashCode()
        {
            int hash = 244;
            hash = 27*hash*m_Id.GetHashCode();
            return hash;
        }
    }
}